/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package integracion;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import negocio.Actividad;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
/**
 *
 * @author lebb
 */
public class ActividadDAO extends DaoGenericoAbstracto<Actividad, Integer> {

    public Actividad findById(int id){
        return super.findById(Actividad.class, id);
    }

    public Actividad getById(int id){
        return super.getById(Actividad.class, id);
    }

    public List<Actividad> findAll(int id){
        return super.findAll(Actividad.class);
    }

    @Override
    public Integer save(Actividad actividad){
        return super.save(actividad);
    }

    @Override
    public void update(Actividad actividad){
        super.update(actividad);
    }

    @Override
    public void delete(Actividad actividad){
        super.delete(actividad);
    }

    public List<Actividad> getByFechas(final Date inicio,final Date fin){
        return (List<Actividad>)getHibernateTemplate().execute(new HibernateCallback() {
            @Override
            public List<Actividad> doInHibernate(Session sn) throws HibernateException, SQLException {
                StringBuilder buffer = new StringBuilder();
                buffer.append("SELECT a FROM Actividad a ");
                buffer.append("WHERE a.inicio <= :i AND a.fin >= :f");
                Query query = sn.createQuery(buffer.toString());
                query.setParameter("i", inicio);
                query.setParameter("f", fin);
                return query.list();
            }
        });
    }

    public static void test() throws Exception {
        // test if this works or not

    }

}
